package van.planifolia.work1;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;

/**
 * Created by Intellij IDEA<br>
 *
 * @author Planifolia.Van
 * @version 1.0
 * @date 2022/11/6 14:52
 */
public class Other {
    public static void main(String[] args) {
        // 在stream流中有一部分不是太常用的方法，比如有合并流，截取流，跳过部分元素等等操作。
        List<String> str1 = new ArrayList<>();
        List<String> str2 = new ArrayList<>();

        str1.add("A"); str1.add("B"); str1.add("C"); str1.add("D");str1.add("A");

        str2.add("a"); str2.add("b"); str2.add("c"); str2.add("d");
        // 我们先要将str1 str2合并
        Stream<String> concat = Stream.concat(str1.stream(), str2.stream());
        // 先打印一下
        concat.forEach(System.out::print);
        System.out.println();
        // 去一下重复，并且跳过前两个元素，然后在只截取两个元素，当我们执行这个代码的时候会发现，虽然上面的便利打印出来了但是，
        // 下面的却报错了，这是因为stream流的一个特性，也是我们下面要开始讲的stream的终止操作，不过我们现在只要知道被终止的
        // 流是无法继续执行任何操作的，想要进行则只能创建一个新流,就比如下面一行的代码
        Stream<String> concat1 = Stream.concat(str1.stream(), str2.stream());
        concat1.distinct().skip(2).limit(2).forEach(System.out::print);
    }
}
